home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr22 / mcalc199.zip / MCALC.HLP < prev    next >
Text File  |  1995-01-07  |  97KB  |  2,609 lines

  1.  
  2.  
  3.  
  4.  
  5. {???}
  6. Help on Help using on line help system.        Topic : ???
  7.  
  8. This online help system is a small hypertext that can display help screens
  9. about various topics. The help is always displayed on the first 24 lines
  10. of the screen. The last line is a menu line :
  11.  
  12. Select help : (T)opics, (I)ndex, (C)ontents, (P)revious, (N)ext, (Q)uit
  13.  
  14. TOPICS         prompts you to enter the next topics you search help for.
  15. INDEX          displays immediately the 'Index' help screen.
  16. CONTENTS       displays immediately the 'Table_of_contents' help screen.
  17. PREVIOUS       displays the previous help screen (if any).
  18. NEXT           displays the next help screen, (if any after a PREVIOUS
  19.                selection).
  20. QUIT           return from the help system to Mcalc.
  21.  
  22. When more help is available on a particular topic, this one is displayed
  23. between brackets, like in {???}. Strike  <TAB> to jump to next displayed topic.
  24. Strike <SHIFT><TAB>  to jum to previous  topic. Strike <ENTER> to  select topic
  25. marked by the cursor.
  26.  
  27. Example : See topic {SUMMARY} to obtain an overview of MCalc possibilities.
  28. Strike T to select TOPICS, then strike S U M M A R Y followed by <RETURN>
  29. or strike <TAB>, then <RETURN>.
  30.  
  31.  
  32. {CONTENTS}
  33.                                Table of contents.
  34.                                ------------------
  35.  
  36.  {Summary}          Summary help screen for Mcalc.
  37.  
  38.  {???}              How to use the on-line help system?
  39.  
  40.  {Commands}         List of commands sorted by type.
  41.  
  42.  {Keywords}         List of all Mcalc keywords.
  43.  
  44.  {Functions}        List of functions sorted by type.
  45.  
  46.  {Index}            Index of all available topics.
  47.  
  48.  {Procedure_Basic}  Introduction to the procedure language.
  49.  
  50.  {Utilities}        List of Mcalc supplied utilities.
  51.  
  52.  {Version}          Version of Mcalc availables and release notes.
  53.  
  54.  
  55. {Keywords}
  56.                           List of all Mcalc keywords.
  57.                           ---------------------------
  58.                                                           Next_page: {Keyword1}
  59.  
  60. Keyword        C/F  Eval Proc Description:
  61.  {abs}         F    X    X    absolute of a value
  62.  {acos}        F    X    X    arc cosine
  63.  {acosh}       F    X    X    hyperbolic arc cosine
  64.  {and}         F    X    X    bitwise and of to integer numbers
  65.  {asin}        F    X    X    arc sine
  66.  {asinh}       F    X    X    hyperbolic arc sine
  67.  {atan}        F    X    X    arc tangent
  68.  {atanh}       F    X    X    hyperbolic arc tangent
  69.  {atan_}       F    X    X    four quadrans arc tangent
  70.  {close}       C    X    X    close any opened input file or log file
  71.  {clear}       C    X    X    reset all variables to 0.0
  72.  {cls}         C    X    X    clear the current screen (in text mode)
  73.  {color}       C         X    change the current pen color in graphical mode
  74.  {convert}     C    X    X    convert value between units
  75.  {cor}         C    X    X    compute the correlation between two series
  76.  {cos}         F    X    X    cosine
  77.  {cosh}        F    X    X    hyperbolic cosine
  78.  {dot}         C         X    draw a dot in graphical mode
  79.  
  80.  
  81. {Keyword1}
  82.                           List of all Mcalc keywords.
  83.                           ---------------------------
  84.                                Next_page: {Keyword2}, Previous_page: {Keywords}
  85.  
  86. Keyword        C/F  Eval Proc Description:
  87.  {edit}        C    X         invoke the editor menu
  88.  {editm}       C    X         invoke the macro editor/compiler driver
  89.  {end}         C         X    terminate a procedure execution
  90.  {exp}         F    X    X    exponential of base 'e'
  91.  {exp2}        F    X    X    exponential of base 2
  92.  {exp10}       F    X    X    exponential of base 10
  93.  {fact}        F    X    X    factorial
  94.  {finput}      C         X    read one value from a file
  95.  {finput_}     C         X    read two numbers from a file
  96.  {float}       C    X    X    view or change floating point exceptions
  97.  {for}         C         X    enter a 'for' loop
  98.  {format}      C    X    X    specify the numeric answer format
  99.  {frac}        F    X    X    fractional part of a real number
  100.  {from}        S    X    X    'convert from to'
  101.  {gosub}       C         X    call a subroutine
  102.  {goto}        C         X    transfert procedure execution 
  103.  {graph}       C         X    enter graphical mode during procedure execution
  104.  {help}        C    X    X    invoke the online help system
  105.  {iconv}       C    X    X    inverse conversion
  106.  
  107.  
  108. {Keyword2}
  109.                           List of all Mcalc keywords.
  110.                           ---------------------------
  111.                                Next_page: {Keyword3}, Previous_page: {Keyword1}
  112.  
  113. Keyword        C/F  Eval Proc Description:
  114.  {if}          C    X    X    conditionnal execution
  115.  {inormal}     F    X    X    inverse of gaussian distribution
  116.  {input}       C         X    enter a value from the keyboard
  117.  {inputk}      F    X    X    read a keyboard key and return the code
  118.  {int}         F    X    X    integer part of a real number
  119.  {integral}    C    X         romberg finite integration of a function
  120.  {interpol}    C    X    X    interpolation from a data serie using lagrange
  121.  {interpol_}   C    X    X    interpolation from a data serie using spline
  122.  {j0}          F    X    X    Bessel function
  123.  {j1}          F    X    X    Bessel function
  124.  {jn}          F    X    X    Bessel function
  125.  {last}        F    X         return the last answer
  126.  {line}        C         X    draw a line in graphical mode
  127.  {list}        C    X    X    list all allocated variables not null
  128.  {listk}       C    X         list all user defined function keys
  129.  {listr}       C    X    X    list all points used from the last regression
  130.  {ln}          F    X    X    logarithm in base 'e'
  131.  
  132.  
  133. {Keyword3}
  134.                           List of all Mcalc keywords.
  135.                           ---------------------------
  136.                                Next_page: {Keyword4}, Previous_page: {Keyword2}
  137.  
  138. Keyword        C/F  Eval Proc Description:
  139.  {load}        C    X    X    load a new procedure in the editor memory
  140.  {loadvar}     C    X    X    reload values from a dumpfile to the variable
  141.  {lock}        C    X    X    modify remote file status and content
  142.  {log}         F    X    X    logarithm in base 'e'
  143.  {log2}        F    X    X    logarithm in base 2
  144.  {log10}       F    X    X    logarithm in base 10
  145.  {macro}       C    X    X    execute or abort a keyboard macro
  146.  {max}         F    X    X    maximum value of a data serie 
  147.  {mean}        F    X    X    average value of a data serie
  148.  {min}         F    X    X    minimum value of a data serie
  149.  {modulo}      F    X    X    modulo of a value by another one
  150.  {next}        S         X    'for to step ... next'
  151.  {normal}      F    X    X    gaussian distribution
  152.  {not}         F    X    X    bitwise inversion of integer number
  153.  {or}          F    X    X    bitwise or of integer numbers
  154.  {pi}          F    X    X    returns the value or 'pi'
  155.  {pixel}       C         X    set/reset a pixel in graphical mode
  156.  {plot}        C    X         plot a function
  157.  {plotr}       C    X         plot the last regression result
  158.  
  159.  {print}       C         X    displays expressions or strings
  160.  
  161.  
  162. {Keyword4}
  163.                           List of all Mcalc keywords.
  164.                           ---------------------------
  165.                                Next_page: {Keyword5}, Previous_page: {Keyword3}
  166.  
  167. Keyword        C/F  Eval Proc Description:
  168.  {pwr}         F    X    X    raise a value at a power
  169.  {quit}        C    X    X    finish an Mcalc session
  170.  {rcl}         F    X    X    recall a value stored in a variable
  171.  {rconv}       C    X    X    repeat a conversion
  172.  {read}        C    X    X    open an ascii file in input mode
  173.  {read_}       C    X    X    open & read data from a file to variable
  174.  {reg}         C    X   (X)   execute regression analysis
  175.  {remote}      C    X    X    request remote file status
  176.  {return}      C         X    return from a subroutine
  177.  {rnd}         F    X    X    random number generator
  178.  {run}         C    X    X    run a procedure
  179.  {savevar}     C    X    X    store variables contents to a dumpfile
  180.  {scale}       C    X    X    modify graphic axis scale type
  181.  {setup}       C    X         modify Mcalc default parameters
  182.  {shell}       C    X    X    call a dos shell session
  183.  {sigma}       F    X    X    spread value of a data serie
  184.  {sin}         F    X    X    sine
  185.  {sinh}        F    X    X    hyperbolic sine
  186.  
  187.  
  188. {Keyword5}
  189.                           List of all Mcalc keywords.
  190.                           ---------------------------
  191.                                Next_page: {Keyword6}, Previous_page: {Keyword4}
  192.  
  193. Keyword        C/F  Eval Proc Description:
  194.  {solve}       C    X         equation solver (find roots)
  195.  {solve_}      C    X         equation solver (find extremums)
  196.  {sqr}         F    X    X    square root
  197.  {sqrt}        F    X    X    square root
  198.  {step}        S         X    'for to step ... next'
  199.  {sto}         F    X    X    store a value into a variable
  200.  {table}       C    X         generate a table of function's values
  201.  {tan}         F    X    X    tangent
  202.  {tanh}        F    X    X    hyperbolic tangent
  203.  {task}        C    X    X    invokes a Mcalc user task
  204.  {then}        S         X    'if ... then'
  205.  {to}          S         X    'for to step next'  'convert from to'
  206.  {twopi}       F    X    X    returns the value of '2 * pi'
  207.  {write}       C    X    X    open a log file
  208.  
  209.  
  210. {Keyword6}
  211.                           List of all Mcalc keywords.
  212.                           ---------------------------
  213.                                                       Previous_page: {Keyword5}
  214.  
  215. Keyword        C/F  Eval Proc Description:
  216.  {y0}          F    X    X    Bessel function
  217.  {y1}          F    X    X    Bessel function
  218.  {yn}          F    X    X    Bessel function
  219.  {xor}         F    X    X    bitwise xor of integer numbers
  220.  
  221.  
  222. {Commands}
  223.                       List of commands sorted by subject.
  224.                       -----------------------------------
  225.  
  226. Mcalc commands fall into the following categories:
  227.  
  228. Files I/O:               {read} {write} {finput} {finput_} {print} {close} 
  229.  
  230. Numerical analysis:      {plot} {table} {solve} {solve_} {interpol} {interpol_}
  231.                          {integral}
  232.  
  233. Memory and procedures:   {load} {loadvar} {savevar} {run} {edit} {NOTEPAD}
  234.  
  235. Keyboard and macros:     {editm}  {macro}  {MAC}   {MCMAC}  {NOTEPAD}   {MCKEY}
  236.                          {listk}
  237.  
  238. Units conversion:        {convert} {rconv} {iconv} {MAKEUNIT}
  239.  
  240. Statistics:              {read_} {reg} {cor} {listr} {plotr}
  241.  
  242. Miscellaneous:           {format} {setup} {help}  {list} {shell} {quit}  {task}
  243.                          {remote} {lock} {float}
  244.  
  245.  
  246. {VERSION}
  247.                            This is Mcalc Version 2.0.
  248.  
  249.                        Copyright (C) 1994 by D. Gosseau.
  250.  
  251. History of the various Mcalc versions from 1.0:
  252.  
  253. Version 1.1 :
  254. a)   'format' use a  string formatter  instead of taking  two decimal  numbers,
  255.      allowing more flexibility. For more details: {format}
  256. b)   'for  next' loop  now  support  floating  value  and  require  the  'step'
  257.      argument.  Loops may be integer  of floating, increment  or decrement. For
  258.      more details: {for}
  259. c)   The new command  'convert' is  added to perform  unit conversion.  Please,
  260.      look at {convert} and {makeunit} for more details.
  261.                                                                More: {Version1}
  262.  
  263.  
  264. {Version1}
  265. Version 1.2 :
  266. Starting with  version 1.2, Mcalc supports  now some functions with  a variable
  267. number of arguments. If no argument is necessary, no parenthesis are necessary.
  268. This new features implies the following changes:
  269.      1)   The indirect adressing is no more using the 'i' variable. The  syntax
  270.           of the  STO function  has  changed. Please,  look  at {STO}  for  the
  271.           details.
  272.      2)   The following functions do no more use the 'p' variables:
  273.           pwr, atan_, jn, yn, and , or, and  xor. 
  274.      3)   The Pi function no more request a dummy argument.
  275.      4)   The following functions are added:
  276.           'twopi' returns twice the value of 'pi'.
  277.           'last' returns the value of the last calculation. The variable 'l' is
  278.           no more affected.
  279.                                                                More: {Version2}
  280.  
  281.  
  282. {Version2}
  283. Version 1.3 :
  284. From  this version, the variable tables is  allocated at runtime. The number of
  285. total variables (direct + indirect access) can be up to 8000. The table size is
  286. defined in Setup. The 'setup' command accepts a new optional argument.
  287.  
  288. Version 1.41 :
  289. From this version, the  basic statistical functions and regression  are covered
  290. using  a  totally different  concept. With  respect  to previous  versions, the
  291. following commands and functions are changed:
  292.      1)   The  commands 'clsum',  'sum' and  'sum_'  are removed.  The function
  293.           'correl' is also suppressed.
  294.      2)   The following commands are added:
  295.           'reg'     performs a multi-model regression analysis.
  296.           'plotr'   plots the data cloud and function of the last regression.
  297.           'listr'   lists the data points of the last regression.
  298.           'cor'     performs a new correlation function with graphical result.
  299.      3)   The following functions are modified: 'mean' and 'sigma'.
  300.      Please, refer at {Statistics} for detailed explanations.
  301.  
  302.      4)   Two  new  commands are  added to  store  or retreive  memory contents
  303.           to/from disk file: 'savevar' and 'loadvar'.
  304.  
  305.                                                                More: {Version3}
  306.  
  307.  
  308. {Version3}
  309. Version 1.6 :
  310.      1)   From this version,  the user functions  keys are user  configurables.
  311.           The  definitions  are stored  into  'mcalc.key'  file. This  file  is
  312.           created from an ASCII description  file via the 'mckey.exe'  utility.
  313.           Please, refer to {listk} for more details.
  314.      2)   A new  {notation} is available: #v.  Please, refer at  this topic for
  315.           more details.
  316.      3)   Two new functions  are added:  normal and inormal.  Please, refer  to
  317.           {Statistics} for more details.
  318.      4)   Four new commands are added: read_, integral, interpol and interpol_.
  319.           Please, look at each of these topics for details.
  320.      5)   The online  help system  has been reordered.  A compleet list  of all
  321.           available keywords is supplied.
  322. Version 1.7 :
  323.      1)   This version supports keyboard  macros. Please, refer at {Macro}  for
  324.           details. The following commands are added: 'editm', 'macro'.
  325.      2)   The 'dot' command is added.
  326. Version 1.8 :
  327.      1)   The 'clear' command has been added.
  328.      2)   Some minor bugs have been corrected.
  329.      3)   The 'assistant' interface has been added for later improvements.
  330.  
  331.                                                                More: {Version4}
  332.  
  333.  
  334. {Version4}
  335. Version 1.92 :
  336.      1)   The   functions  'min'  and  'max'   have  been  added.  Please,  see
  337.           {Functions} for more details.
  338.      2)   The {task} command has been added.
  339.      3)   Some minors bugs have been corrected.
  340.      4)   Some extra commands have been implemented for internal purpose in the
  341.           keyboard macro interface driver and compiler.
  342.  
  343. Version 1.995 :
  344.      1)   The {scale} command has been added.
  345.      2)   The remote falicities for  Windows 386 mode have been  added. Please,
  346.           refer to {remote} and {lock} for details.
  347.      3)   The {modulo} function has been added.
  348.      4)   The on-line system now only uses the mouse if necessary.
  349.      5)   Setup M now defines the path for various kind of files.
  350.      6)   The command line switchs /P and /R are added.
  351.      7)   The floating point exception  handler has been enhanced.  The {float}
  352.           command has been added.
  353.  
  354.  
  355. {INDEX}
  356.                         Index of available help topics.
  357.                         -------------------------------
  358.  
  359.      {Area_pointer}   {Arithmetic}   {Bessel}   {Binary}   {Functions}
  360.  
  361.      {Help}   {Internal_editor}   {Keywords}   {last}   {Macro}
  362.  
  363.      {MAC}   {MCMAC}   {MAKEUNIT}
  364.  
  365.      {MCKEY}   {Notation}   {Operators}   {Power and Log}
  366.  
  367.      {Procedure_Basic}   {setup}   {Statistics}   {Summary}   {Trigonometric}
  368.  
  369.      {Variables}   {Version}   
  370.  
  371.  
  372. {SUMMARY}
  373.                        Summary of online available help.
  374.                        ---------------------------------
  375.  
  376.  {Keywords}  : list of all recognized keywords in alphabetical order.
  377.  
  378.  {Commands}  : list of commands sorted by type.
  379.  
  380.  {Functions} : list of functions sorted by type.
  381.  
  382.  {???}         How to obtain help on the help system.
  383.  
  384.  {Notation}  : #x #h  = hexa,  #o =  octal,  #b =  binary ,  #a =  ascii, #v  =
  385.                variable index.
  386.  
  387.  {Operators} : + - * / ^ ()
  388.  
  389.  {Procedure_Basic} :     list of all commands typically used into a procedure.
  390.  
  391.  {Variables} : a --> z  and indirect access.
  392.  
  393.  Assignment  : variable = expression (ex:   i=3)
  394.  
  395.  {float}     : Mcalc handler of floating point exceptions.
  396.  
  397.  
  398. {Edit}
  399.                                       edit
  400.                                       ----
  401.  
  402. This command  is used to enter the editor mode.  When given, the following menu
  403. is displayed : 
  404.  
  405. Command mode : (L)oad, (S)ave, (E)dit, (R)un, (N)ew, (D)ir, (Q)uit.
  406.  
  407. Load & Save    are used to Load a Master Calc Procedure into memory (or save it
  408.                to a file).
  409. Edit           is used to execute the {Internal_editor}.
  410. Run            is used to execute the procedure, starting from the first line.
  411. New            is used to erase the editor area.
  412. Dir            is used to obtain a directory of all available procedures.
  413. Quit           return from editor mode to evaluation mode.
  414.  
  415. A procedure length is  limited to 50  lines, but only the  twenty first can  be
  416. edited and displayed using the internal editor.
  417.  
  418.                                                   Related topics: {Load}, {Run}
  419.  
  420.  
  421. {Internal_editor}
  422.                                 Internal editor.
  423.                                 ----------------
  424.  
  425. The internal  editor is suitable for  fast edition of simple  procedure. It can
  426. only  process a 20  lines maximum text  file. (MCalc  supports a maximum  of 50
  427. lines of program. In such  case, use an external  editor). This editor is  very
  428. limited as no delete/insert  function is supplied at  the character level.  The
  429. editor works only in overwrite mode. The only supported keys are :
  430.  
  431.           Up        Cursor motion.
  432.           Down      "
  433.           Left      "
  434.           Right     "
  435.           End       insert an empty line at the cursor position
  436.           Ctrl Y    delete the line at the cursor position
  437.  
  438.           ESC       exit the internal editor mode.
  439.  
  440.  
  441. Remark :  Version  2.0  of MCalc  will be  supplied  with a  more sophisticated
  442.           editor.
  443.  
  444.  
  445. {clear}
  446.                                      Clear
  447.                                      -----
  448.  
  449. This command is used to reset  all variables to 0.0. It affect both  direct and
  450. indirect variables.  The 'last'  function  returns the  highest valid  indirect
  451. index.
  452.  
  453.  
  454. {Convert}
  455.                                     Convert
  456.                                     -------
  457.  
  458. This  command is used  to convert a  value from  one unit to  another one. Both
  459. units are checked to be of the same dimension.
  460.  
  461.           Syntax :       Convert expression from "unit1" to "unit2"
  462.                          Convert expression from "?"
  463.  
  464.           expression     any  expression resulting  in  a numeric  value to  be
  465.                          converted.
  466.           unit1          a quotted string of the original unit.
  467.           unit2          a quotted string of the destination unit.
  468.  
  469. If the  second syntax is  used, Mcalc  prompt you for  both units.  It displays
  470. first the  units available into  its table. If the  first syntax is  used, both
  471. units may contain Prefix_Declaration.
  472.  
  473. In evaluation mode, the answer of  convert, rconv and iconv is stored  into the
  474. variable 'l' as last result.
  475.  
  476.                                                               More : {convert1}
  477.                                    Related topics: {rconv}, {iconv}, {makeunit}
  478.  
  479.  
  480. {Convert1}
  481.  
  482. A  Prefix_Declaration, is  a  prefix that  preceeds the  unit  string and  that
  483. declares the unit must be interpreted as a multiple of submultiple.
  484. The following prefixes are recognized by Mcalc:
  485.  
  486. E    exa       18                         d    deci      -1
  487. P    peta      15                         c    centi     -2
  488. T    tera      12                         m    milli     -3
  489. G    giga      9                          µ    micro     -6
  490. M    mega      6                          n    nano      -9
  491. k,K  kilo      3                          p    pico      -12
  492. h,H  hecto     2                          f    femto     -15
  493. D    deca      1                          a    atto      -18
  494.  
  495. The prefix is  separated from the unit by a  underscore character. For example,
  496. to convert 1 hectare into acre, give the following command:
  497.  
  498.                          convert 1 from "h_a" to "acre"
  499.  
  500.                                                                More: {convert2}
  501.  
  502.  
  503. {convert2}
  504.  
  505. The unit  conversion  algorithm  used by  Mcalc,  performs  dimension  checking
  506. between  units  before conversion.  You  cannot  convert units  having  unequal
  507. dimensions.  For example,  you  can convert  "Pa"  to "mmHg"  because both  are
  508. pressions,  but you cannot  convert "ohm" into  "S" (Siemens), because  self if
  509. they are related concepts, they are not the same physical dimension.
  510.  
  511. Caution:  When  converting  temperature, Mcalc  does not  keep track  of offset
  512.           between  units. For  example, conversion  between ΦC  and ΦF  will be
  513.           exact to convert the amount  of ΦC into ΦF, but ignore  the different
  514.           origins of the scales.
  515.  
  516. To check dimension, each unit  is stored into a table with its basic dimensions
  517. in the international system. This recognizes 7 basic units: m, kg, s, A, ΦK, cd
  518. and  mol. We have added a eigth unit  called cur for currency. This is intended
  519. to  enable you to perform  also conversion between  various currencies. Because
  520. these units are not fixed  one, you have to regulary update the unit table used
  521. by Mcalc. To do that, you can use the supplied utility {MakeUnit}.
  522.  
  523.  
  524. {rconv}
  525.                                      Rconv
  526.                                      -----
  527.  
  528. This command is used in relation with {Convert} and {Iconv}.
  529. If  you have to regulary perform the  same conversion, Rconv (as Re-Convert) is
  530. used as a  shortcut to repeat a conversion process  without having the redefine
  531. the same units.
  532.  
  533.           Syntax :       rconv expression
  534.  
  535.  
  536. Rconv uses the last units specified with Convert.
  537.  
  538.  
  539. {iconv}
  540.                                      Iconv
  541.                                      -----
  542.  
  543. This command is used in relation with {Convert} and {Rconv}.
  544. If you have to regulary perform the same conversion, Iconv (as Inverse-Convert)
  545. is  used as  a  shortcut to  repeat  a conversion  process  without having  the
  546. redefine the same units.
  547.  
  548.           Syntax :       iconv expression
  549.  
  550.  
  551. Iconv  uses  the last  units  specified  with Convert  but  perform an  inverse
  552. conversion.
  553.  
  554.  
  555. {MakeUnit}
  556.                                     MakeUnit
  557.                                     --------
  558.  
  559. Makeunit is a utility supplied with the registered version of Mcalc and used to
  560. add,  delete or modify units from the  table. Mcalc and MakeUnit have space for
  561. 100  units into one  file. Be carefull  never to modify the  original data file
  562. delivered with Mcalc. Works always on a copy!
  563.  
  564. Be consitent in the description of dimension of units. The values are the power
  565. of these units. For example, the "Pa" pressure unit has the dimension:
  566.  
  567.                                    1 Kg/m*s^2
  568.  
  569. This is defined as: Kg +1, m -1, s -2.
  570.  
  571.  
  572. {Plot}
  573.                                       Plot
  574.                                       ----
  575.  
  576. This command is used to plot the evolution of a procedure describing a function
  577. or an equation. The procedure must first be loaded in the editor screen.
  578. It must describe a function or a program that take one value as input  into one
  579. variable and return an answer into another variable. 
  580.  
  581.           Syntax :       Plot input_var , output_var, from , to , nb_steps
  582.  
  583.           input_var      the procedure input variable name
  584.           output_var     the procedure output variable name
  585.           from           the begin of the input_var range
  586.           to             the end of the input_var range
  587.           nb_steps       the number of points to compute [max : 8192]
  588.  
  589. When the graphic is displayed, you are in interactive mode. 
  590.  
  591.                   More : {Plot1}, Related_command: {Table}, {Plotr} and {Scale}
  592.  
  593.  
  594. {Plot1}
  595. Example : To plot the 'sin(x)/x' function, edit the following procedure :
  596.  
  597.           if x=0 then goto 10
  598.           y = sin(x)/x
  599.           end
  600.           10 y=1
  601.           end
  602.  
  603. Now,  in  evaluation  mode,  give  the  'setup'   command  and  taek  care  the
  604. trigonometric switch is in 'Radian'. Give the following command:
  605.  
  606.           plot x,y,-40,40,500
  607.  
  608. This will plot the procedure sin(x)/x between -40 and +40 using 500 points.
  609. The variable x is assumed the input variable of the procedure and y the output.
  610.  
  611. Example : To plot the polynom  'ax2+bx+c' edit the following line :
  612.           z = a*x^2+b*x+c
  613.  
  614. Now, in evaluation mode, give for example :
  615.           a=1
  616.           b=0
  617.           c=-4
  618. Now, plot is with :  plot x,z,-3,3,100
  619.  
  620.  
  621. {Table}
  622.                                      Table
  623.                                      -----
  624.  
  625. The table  command works exactly  like the {Plot} command.  Instead of plotting
  626. the procedure, a table of the X,Y kind is displayed.
  627.  
  628.  
  629.           Syntax :       Table input_var , output_var, from , to , nb_steps
  630.  
  631.           input_var      the procedure input variable name
  632.           output_var     the procedure output variable name
  633.           from           the begin of the input_var range
  634.           to             the end of the input_var range
  635.           nb_steps       the number of points to compute [max : 8192]
  636.  
  637. Please, refer to {Plot} for how to write the procedure.
  638.  
  639.  
  640. {List}
  641.                                       List
  642.                                       ----
  643.  
  644. This command  displays every variables 'a' to 'z' that  has been assigned a non
  645. zero value, as well as all others variables referenced via indirect adressing.
  646.  
  647.                                                        Related command: {Listr}
  648.  
  649.  
  650. {Shell}
  651.                                      Shell
  652.                                      -----
  653.  
  654. This command execute a dos shell command.com routine. You are at the dos prompt
  655. but your Mcalc session is not finished. By giving the Dos 'Exit' command, you
  656. come back to Mcalc and continue where you were.
  657.  
  658. Caution:  Take care to stay in the original subdirectory when you  come back to
  659.           Mcalc !!!
  660.  
  661.  
  662. {Format}
  663.                                      Format
  664.                                      ------
  665.  
  666. This command  take one double  quotted string  and define  the standard  output
  667. format.
  668.  
  669.           Syntax :       Format "string"
  670.  
  671.           where  "string"  represents the  traditionnal  ANSI  C printf  format
  672.           string descriptor of the general form:
  673.  
  674.                         % prefix width .precision l type
  675.  
  676.           prefix    - = left  justify, + = preceed  with sign, blank =  preceed
  677.                     with blank
  678.           width     the minimum number of digits to display
  679.           precision the number of decimal digits to display
  680.           type      f = fixed float, e = scientific notation, 
  681.                     g = f or e (whichever is the shorter).
  682.  
  683.           Example:  format "%-15.3lf"
  684.  
  685.           The default format is "%17.15lg".
  686.  
  687.  
  688. {Variables}
  689.                                    Variables.
  690.                                    ----------
  691.  
  692. Mcalc use up to 8000 variables. 
  693. The 26 first have direct access and are called 'a' to 'z'.
  694. All variables have also index 0 to 7999. They can be accessed indirectly.
  695.  
  696. Direct access :
  697. Assignment :   variable = expression
  698.                a = sin(x) / x + x^3 - 12.5
  699. Usage :        within an expression. If the first argument of the line, must be
  700.                preceded by + or - 
  701.                +a+12.5  is equivalent to 12.5+a
  702.  
  703. Indirect access :
  704. Assignment:         STO(value,index)  
  705. Usage:              RCL(index)
  706.  
  707. For more info refer to {STO} and {RCL}
  708.  
  709.  
  710. {STO}
  711.                           Indirect memory assignment.
  712.                           ---------------------------
  713.  
  714. The STO function is used to enable indirect memory assignment.
  715.  
  716.           Syntax : STO(value,index)
  717.           Returned value : the index
  718.  
  719.           Example :      To  assign the value 12  to the variable  'b' that has
  720.                          index value 1, do the following :
  721.  
  722.                          sto(12,1)
  723.  
  724.           Equivalence :  b=12
  725.                                                        Related function : {RCL}
  726.  
  727.  
  728. {RCL}
  729.                              Indirect memory usage.
  730.                              ----------------------
  731.  
  732. The RCL function is used to retreive a variable content via indirect access.
  733.  
  734.           Syntax : RCL(index)
  735.           Returned value : the value stored in the indexed variable.
  736.  
  737.           Example :      To  retreive  indirectly the  content of  variable 'b'
  738.                          that has the index value 1, do the following :
  739.  
  740.                          rcl(1)
  741.  
  742.           Equivalence :  +b
  743.                                                        Related function : {STO}
  744.  
  745.  
  746. {Operators}
  747.                                    Operators.
  748.                                    ----------
  749.  
  750. Mcalc  recognizes  the  following  operators,  sorted  from highest  to  lowest
  751. priority :
  752.  
  753. ()
  754.  
  755. ^              Integer exponent (For real exponant, use the 'pwr' function.)
  756.  
  757. * and /        Multiplication and Division
  758.  
  759. + and -        Addition and substraction
  760.  
  761.  
  762. {Functions}
  763.                       List of functions sorted by subject.
  764.                       ------------------------------------
  765.  
  766. Mcalc functions fall into the following categories:
  767.  
  768.  {Power and Log}    pwr sqr sqrt log ln log10 log2 exp exp10 exp2
  769.  
  770.  {Trigonometric}    sin cos tan asin acos atan atan_ 
  771.                     sinh cosh tanh asinh acosh atanh 
  772.                     pi twopi
  773.  
  774.  {Arithmetic}       abs int frac rnd fact modulo
  775.  
  776.  {Bessel}           j0 j1 jn y0 y1 yn
  777.  
  778.  {Binary}           not and or xor
  779.  
  780.  {Statistics}       mean min max sigma cor normal inormal
  781.  
  782.  {last}             returns the value of the latest answer
  783.  
  784.      Please,  refer  at  the particular  topic  for  details  on each  function
  785.      argument list, usage, description and syntax.
  786.  
  787.  
  788. {Power and Log}
  789.                               Power and Logarithm.
  790.                               --------------------
  791.                Syntax :  Function(value)
  792.                Returned value :                             Example :
  793.  
  794. pwr            use two arguments: arg1 at power of arg2     pwr(2,4) --> 16
  795.  
  796. sqr            square root of value
  797. sqrt
  798.  
  799. log            natural logarithm of value
  800. ln
  801.  
  802. log10          logarithm in base 10 or 2 of value
  803. log2
  804.  
  805. exp            respectively e, 10 or 2 at the power of value
  806. exp10
  807. exp2
  808.  
  809.  
  810. {Trigonometric}
  811.                             Trigonometric functions.
  812.                             ------------------------
  813.  
  814.                Syntax :  Function(value)
  815.                Returned value :
  816.  
  817. sin  sinh      the sine of value
  818. cos  cosh      the cosine of value
  819. tan  tanh      the tangent of value
  820.  
  821. sinc           the cardinal sine of value
  822.  
  823. asin asinh     the inverse sine of value
  824. acos acosh     the inverse cosine of value
  825. atan atanh     the inverse tangent of value (Please, refer also {atan_}
  826.  
  827. pi,twopi       the value  of 'pi' or 2  pi. These two functions  don't take any
  828.                argument.
  829.  
  830. The 'h' version means the hyperbolic function.
  831.  
  832. Depending of  the {Setup}, the arc is interpreted as degree or radian, excepted
  833. for the hyperbolic version.
  834.  
  835.  
  836. {atan_}
  837.                        The trigonometric atan_ function.
  838.                        ---------------------------------
  839.  
  840. The trigonometric 'atan_' function requires two arguments.
  841.  
  842.           Syntax :  atan_(value_x , value_y)
  843.  
  844.           atan_ use the sign of both arguments to determine the quadrant of the
  845.           returned arc. Depending  of the  {Setup}, the arc  is interpreted  as
  846.           degree or radian.
  847.  
  848.  
  849. {Bessel}
  850.                               Bessel's functions.
  851.                               -------------------
  852.  
  853. The following Bessel functions are available:
  854.  
  855.                                j0 j1 jn y0 y1 yn
  856.  
  857.                Syntax :  Function(value)
  858.  
  859.  
  860.                Remark:   The 'jn' and 'yn' functions require two arguments, the
  861.                          order n is the second arguments.
  862.  
  863.                Example:  The following expressions are equivalent:
  864.  
  865.                            j0(10)    and    jn(10,0)
  866.  
  867.  
  868. {Arithmetic}
  869.                              Arithmetic functions.
  870.                              ---------------------
  871.  
  872.                Syntax :  Function(value)
  873.                Returned value :
  874.  
  875. abs            the absolute value of 'value'
  876.  
  877. int            the integer part of value
  878.  
  879. frac           the fractional part of value
  880.                equals :  value - int(value)
  881.  
  882. rnd            a random number.
  883.                if value = 0 : uniform distribution between 0 and 1
  884.                if value > 0 : gaussian distribution with mean=0, sigma=1
  885.                if value < 0 : a new seed is asked for.
  886.  
  887. fact           the factorial of value
  888.  
  889. modulo         value1 modulo value2 (both values are considered as long integer
  890.                numbers.)
  891.  
  892.  
  893. {Binary}
  894.                                Binary functions.
  895.                                -----------------
  896.  
  897. The  binary function  handles their  argument as  if they  are a  unsigned long
  898. integers (32 bits unsigned integer). 
  899.  
  900.  
  901.                Syntax :  not(value)
  902.                          and(value1,value2)
  903.                          or(value1,value2)
  904.                          xor(value1,value2)
  905.  
  906.                Returned value
  907.  
  908. not            bitwise 'not' of value
  909. and            bitwise value1 and value2
  910. or             bitwise value1 or value2
  911. xor            bitwise value1 exclusive or value2
  912.  
  913. Value can be entered as decimal, octal, hexadecimal and binary.
  914. Please, refer to {Notation} for more details.
  915.  
  916.  
  917. {Statistics}
  918.                       Statistical functions and commands.
  919.                       -----------------------------------
  920. Mcalc supplies a set of commands and functions to perform single statistics and
  921. multiple models regression analysis.  The Procedure_Basic commands 'finput' and
  922. 'finput_' are used to enter the data points into the  indirect access variables
  923. table. The 'mean' and 'sigma' functions returns the average (or mean value) and
  924. the RMS  (or sigma  value) from  a serie of  data points.  The commands  'reg',
  925. 'plotr', 'listr' and 'cor' are used to perform, plot regression from a serie of
  926. data points. The statistical functions and commands are based on the concept of
  927. '{Area_Pointer}'. Please refer to this topic for more details.
  928.  
  929. Commands:
  930.      {read_}   read a structured data file and store it in memory
  931.      {reg}     performs a regression analysis on a data serie.
  932.      {plotr}   plots a data serie or the regression results.
  933.      {listr}   list the data serie of a regression
  934.      {cor}     calculate and display a correlation function of two data series.
  935.  
  936. Functions:     Returned value:
  937.      {mean}    the mean of a data serie.
  938.      {min}     the minimum of a data serie.
  939.      {max}     the maximum of a data serie.
  940.      {sigma}   the spread of a data serie.
  941.      {normal}  the probability of a random variable in a normal distribution.
  942.  
  943.  
  944. {Notation}
  945.                              Notation for constant.
  946.                              ----------------------
  947.  
  948. Normally, any  constant is  supposed to be  a decimal  value. It is  any number
  949. composed of the following characters : '.+-1234567890' Also scientific notation
  950. is supported. The following numbers are valid:    1234      0.5123    + 1 2 3 4
  951.      1.435e-3       -12.5          -12.45d5
  952. In scientific notation, the character 'd','D','e' and 'E' are identical.
  953. A number may not begin with a decimal dot: 0.5 is ok,   .5 is not!
  954.  
  955. Unsigned  long integer  numbers (32  bits integer  numbers) are  supported when
  956. introduced by the '#' character. The following notation is valid:
  957.  
  958.      #hvalue #Hvalue #xvalue #Xvalue = hexadecimal numbers
  959.      #ovalue #Ovalue = octal numbers
  960.      #bvalue = binary numbers
  961.      #achar  = ascii character code
  962.      #avariable = the indirect access index value of that variable (a-z)
  963.  
  964.  
  965. The following are equivalent : #aG = #h47 = #o107 = #b1000111 = 71
  966.                            More details about customazing the display : {Setup}
  967.  
  968.  
  969. {Procedure_Basic}
  970.                                 Procedure Basic
  971.                                 ---------------
  972.  
  973. Procedure_Basic is a subset of the BASIC language that you use within  Mcalc to
  974. write procedures. A  procedure is a small entity that play  the same role as an
  975. equation  or a  small program.  Procedure_Basic includes the  following command
  976. set, that may only be used inside a procedure. 
  977.  
  978.      {input}
  979.      {finput}  finput_ 
  980.      {read}  {close}
  981.      {print}
  982.      {if}___then
  983.      {for}___next___step
  984.      {goto}
  985.      {gosub}   return
  986.      {graph}   {color}   {scale}
  987.      {pixel}   {dot}     {line}
  988.      {write}
  989.      {end}
  990.  
  991.                              Related_topic: {Keywords}, {Functions}, {Commands}
  992.  
  993.  
  994. {end}
  995.                                       end
  996.                                       ---
  997.  
  998. This keyword  is used to finish the execution of a procedure. When encountered,
  999. the execution is returned to the calling process. Usually the evaluation parser
  1000. or a high level command as {plot} or {solve}.
  1001.  
  1002.  
  1003. {input}
  1004.                                      input
  1005.                                      -----
  1006.  
  1007. The 'input' keyword is used in {Procedure_Basic} to enter a value to a variable
  1008. when running a procedure.
  1009.  
  1010.           Syntaxe :      input "message" , variable_name
  1011.                          input variable_name
  1012.  
  1013.           When encoutered,  the procedure execution is  suspended and "message"
  1014.           is  displayed. (If  the  2nd syntaxe  is  used, a  default  prompt is
  1015.           displayed.) You have to enter a decimal numeric value.
  1016.           The value is then assigned to the variable.
  1017.           Any valid variable_name is accepted. Please, refer to {Variables} for
  1018.           details.
  1019.  
  1020.  
  1021. {finput}
  1022.                                 finput & finput_
  1023.                                 ----------------
  1024.  
  1025. These  keywords are used  in {Procedure_Basic} to  enter a value  to a variable
  1026. when running a procedure. The value is entered from the currently opened file.
  1027.  
  1028.           Syntaxe :      finput variable_name
  1029.                          finput_ variable_name_1 , variable_name_2
  1030.  
  1031.           When encoutered,  the procedure execution is  suspended and "message"
  1032.           is  displayed. The value is  obtained from the  currently opened file
  1033.           and assigned  to the variable.  The 2nd syntaxe  is used to  read two
  1034.           values from the same line.
  1035.           Any valid variable_name is accepted.
  1036.  
  1037.                                          Other topics: {input}, {read}, {close}
  1038.  
  1039.  
  1040. {inputk}
  1041.                                      inputk
  1042.                                      ------
  1043.  
  1044. This function is used to read a key  from the keyboard and to return its  ascii
  1045. or scan code.
  1046.  
  1047.           Syntaxe :      inputk(flag)
  1048.  
  1049.           When  evaluated, this function read a keystroke and return a floating
  1050.           value of the key that was striked. The returned code is of the form:
  1051.           ascii_code,scan_code.
  1052.           The value before the decimal dot means the ascii code.
  1053.           The value  after the decimal dot,  multiplied by 1000 means  the scan
  1054.           code. The scan code is only available if there is no ascii code.
  1055.  
  1056.           flag :         this  flag determine  where  the key  is obtained.  If
  1057.                          positive or  null, the key is  extracted directly from
  1058.                          the  PC  keyboard  buffer.  (Any  key  supplied  by  a
  1059.                          currently running macro is  ignored). If negative, the
  1060.                          key is  extracted from  Mcalc internal buffer.  The PC
  1061.                          keyboard or the currently running macro is extracted.
  1062.  
  1063.  
  1064. {read}
  1065.                                       read
  1066.                                       ----
  1067.  
  1068. This keyword is used in Procedure_Basic, or as a  command to open an ascii data
  1069. file that contains numeric values.
  1070.  
  1071.           Syntaxe :      read "filename.type"
  1072.  
  1073.           The specified  file  is searched  for and  opened for  input. It  may
  1074.           contain two kind of syntaxe lines:
  1075.  
  1076.           value1
  1077.           value2
  1078.           value3
  1079.           ....
  1080.  
  1081.           value1,value2
  1082.           value3,value4
  1083.           ....
  1084.  
  1085.           Use 'finput' to read the first syntaxe, and 'finput_' for the 2nd.
  1086.  
  1087.                                                 Other topics: {close}, {finput}
  1088.  
  1089.  
  1090. {close}
  1091.                                      close
  1092.                                      -----
  1093.  
  1094. This  keyword is used  in Procedure_Basic or  as a command  to close any opened
  1095. file, with the {read} or {write} commands.
  1096.  
  1097.           Syntaxe :      close
  1098.  
  1099.  
  1100. {print}
  1101.                                      print
  1102.                                      -----
  1103.  
  1104. This  keyword is  used  as  in  a  Procedure_Basic  or as  a  command  to  send
  1105. expressions to the screen (and loggin file).
  1106.  
  1107.           Syntaxe :      print item [separator] [item] [separator]
  1108.  
  1109.           item           can be a valid expression or a "quoted_string"
  1110.           separator      can be ";" or ",". If a comma is used (,) a tabulation
  1111.                          is  send; if a semicolon  (;) is used,  only one space
  1112.                          character will separate from the next item.
  1113.  
  1114.           If no separator is used at the  end of the line, a <Carriage  Return>
  1115.           <Line Feed> is send.
  1116.  
  1117.                                          Other topics: {write} {close} {format}
  1118.  
  1119.  
  1120. {if}
  1121.                                   if ... then
  1122.                                   -----------
  1123.  
  1124. This Procedure_Basic keyword is used to switch procedure execution according to
  1125. a test result.
  1126.  
  1127.           Syntaxe :      if expression test expression then command
  1128.  
  1129.           expression     is any valid expression (constant and/or variable).
  1130.           test           is one of the following characters : <  >  =
  1131.           command        any procedure_basic command
  1132.  
  1133.  
  1134.           Example :      if x > (2*pi(1)) then goto 4
  1135.  
  1136.  
  1137. {for}
  1138.                           for ... to ... step ... next
  1139.                           ----------------------------
  1140.  
  1141. The 'for' keyword is used in procedure_basic to enter a loop.
  1142.  
  1143.           Syntaxe :      for variable = expr1 to expr2 step expr3
  1144.                          ....
  1145.                          next
  1146.  
  1147.  
  1148.           Caution :      if (expr3 >0) expr1 must be less than expr2,
  1149.                          else expr1 must be bigger than expr2.
  1150.  
  1151.                          Each time a next statement is encountered, variable is
  1152.                          incremented by  expr3.(If expr3 is  negative, variable
  1153.                          is decremented.)
  1154.  
  1155.                          The loop is at least executed once self if expression2
  1156.                          is directly obtained.
  1157.  
  1158.  
  1159. {goto}
  1160.                                       goto
  1161.                                       ----
  1162.  
  1163. This procedure_basic  command is used  to transfert  the execution  to a  given
  1164. label.
  1165.  
  1166.           Syntaxe :      goto label
  1167.  
  1168.           label          is any  integer number found exactly  at the beginning
  1169.                          of a procedure line.
  1170.  
  1171.           Example :      the following procedure is  used to program manually a
  1172.                          cardinal sine.
  1173.  
  1174.                          if x=0 then goto 10
  1175.                          y = sin(x)/x
  1176.                          goto 20
  1177.                          10 y=1
  1178.                          20 end
  1179.  
  1180.  
  1181. {gosub}
  1182.                                gosub .... return
  1183.                                -----------------
  1184.  
  1185. This Procedure_Basic  keyword is used to  call a subroutine. A  subroutine is a
  1186. list of instructions terminated by a return.
  1187.  
  1188.           Syntaxe :      gosub label
  1189.  
  1190.                          label instructions
  1191.                          return
  1192.  
  1193.           Example :      another implementation of a cardinal sine function:
  1194.  
  1195.                          gosub 100
  1196.                          end
  1197.                          100 y=1
  1198.                          if x=0 then return
  1199.                          y=sin(x)/x
  1200.                          return
  1201.  
  1202.  
  1203. {graph}
  1204.                                      graph
  1205.                                      -----
  1206.  
  1207. This Procedure  Basic keyword is used to enter into graphical mode. It commutes
  1208. the  screen  to graphical  mode,  and  plot two  axis  according  to the  scale
  1209. information  that follows.  After that,  execution is  returned to  the current
  1210. procedure. All  following procedure body is assumed to compute a graphic and to
  1211. output it via the  {pixel} and {line} commands. No more  input or print command
  1212. may be encountered during the rest of this procedure.
  1213.  
  1214.           Syntax :       graph xmin , ymin , xmax , ymax
  1215.  
  1216.           xmin ymin      are expressions  representing  the lower  left  corner
  1217.                          scale of the graphic
  1218.  
  1219.           xmax ymax      are  expressions representing  the upper  right corner
  1220.                          scale of the graphic
  1221.  
  1222.                                                              Example : {graph1}
  1223.                  Related keywords: {pixel} , {line}, {dot}, {color} and {scale}
  1224.  
  1225.  
  1226. {graph1}
  1227.                Example of procedure using graph, pixel and line.
  1228.                -------------------------------------------------
  1229.  
  1230. The  following procedure illustrate the use  of the {graph}, {pixel} and {line}
  1231. commands to plot an hyperbolic tangent:
  1232.  
  1233.  
  1234.                graph -3,-1.2,3,1.2                        
  1235.                d = 6 / 201                                
  1236.                x=-3                                       
  1237.                for i=0 to 200                             
  1238.                     y = (exp(x)-exp(-x)) / (exp(x)+exp(-x))
  1239.                     if i=0 then pixel x,y,-1               
  1240.                     line x,y                               
  1241.                     x = x+d                                
  1242.                next                                       
  1243.  
  1244.  
  1245. {pixel}
  1246.                                      pixel
  1247.                                      -----
  1248.  
  1249. This Procedure Basic command is used only into a  procedure to switch on or off
  1250. a  pixel on the screen.  It is only  valid into a running  procedure, after the
  1251. 'graph' command has been executed.
  1252.  
  1253.           Syntax :       pixel x , y , flag
  1254.  
  1255.           x and y        are the coordinates of the pixel to modify.
  1256.  
  1257.           flag           if positive the pixel is switched on
  1258.                          if negative the pixel is switched off
  1259.  
  1260.            Example: {graph1}, Related keywords: {graph}, {line}, {dot}, {color}
  1261.  
  1262.  
  1263. {dot}
  1264.                                       dot
  1265.                                       ---
  1266.  
  1267. This Procedure Basic command is used only into a procedure to draw a small boxe
  1268. on the  screen. It is only  valid into a  running procedure, after  the 'graph'
  1269. command has been executed.
  1270.  
  1271.           Syntax :       dot x , y 
  1272.  
  1273.           x and y        are the coordinates of the center of the boxe to draw.
  1274.  
  1275.                             Related keywords: {graph}, {line}, {pixel}, {color}
  1276.  
  1277.  
  1278. {line}
  1279.                                       line
  1280.                                       ----
  1281.  
  1282. This Procedure Basic command is  used only into a  procedure to draw a line  on
  1283. the screen.  It is  only  valid into  a running  procedure,  after the  'graph'
  1284. command has been executed.
  1285.  
  1286.           Syntax :       line x , y
  1287.  
  1288.           x and y        are the coordinates  of the point that must  be joined
  1289.                          by the line.  The origin  of the line  segment is  the
  1290.                          coordinates of the last line or pixel command. If none
  1291.                          of these command have been executed before, the origin
  1292.                          is the top of the y axis.
  1293.  
  1294.           Example: {graph1}, Related keywords: {graph}, {pixel}, {dot}, {color}
  1295.  
  1296.  
  1297. {color}
  1298.                                      color
  1299.                                      -----
  1300.  
  1301. This  Procedure  Basic command  is used  only into  a  procedure to  change the
  1302. current pen color  for subsequent  'dot','pixel' or 'line'  instruction. It  is
  1303. only  valid into  a  running  procedure, after  the  'graph' command  has  been
  1304. executed.
  1305.  
  1306.           Syntax :       color index
  1307.  
  1308.           index          an integer value in the range 0-15.
  1309.  
  1310. By default,  in  color mode,  the  following colors  are  defined (but  may  be
  1311. redefined using 'setup') :
  1312.  
  1313.           0=blue         1=yellow       2=green        3=red
  1314.           4=cyan         5=magenta      6-15=white
  1315.  
  1316. By default, in B&W mode, the following colors are defined:
  1317.  
  1318.           0=black        1-15=white
  1319.  
  1320.                                 Related topics: {graph}, {line}, {dot}, {pixel}
  1321.  
  1322.  
  1323. {Solve}
  1324.                                      solve.
  1325.                                      ------
  1326.  
  1327. The  Solve command is  used to  find one  or more real  root(s) of  the current
  1328. procedure. It is  advised first to use the {Plot} or  {Table} command to get an
  1329. idea about the procedure behaviour, before using the Solve command.
  1330.  
  1331. The procedure  must first  be loaded in  the editor screen.  t must  describe a
  1332. function or a program that take one value as input into one variable and return
  1333. an answer into another variable
  1334.  
  1335.           Syntax :       solve input_var , output_var , root_approx
  1336.  
  1337.           input_var      the procedure input variable name
  1338.           output_var     the procedure output variable name
  1339.           root_approx    is an approximation to start searching a root
  1340.  
  1341. Solve use a Newton algorithm to find a root. The accuracy and number maximum of
  1342. itterations are defined with the {Setup} command.
  1343.  
  1344.                                     Example:{solve1}, Related_command: {solve_}
  1345.  
  1346.  
  1347. {Solve1}
  1348. Example :      to  find the  root of  the  equation :  x^2=4,  you rewrite  the
  1349.                equation as a procedure of the form:
  1350.  
  1351.                Output_var = functionLeft(Input_var) - FunctionRightInput_var)
  1352.  
  1353.                in this example :  y = x^2-4
  1354.  
  1355.                Now, you give :    solve y,x,0
  1356.                Mcalc  supplie  one  root  : 2.0000  and  eval  =  value  of the
  1357.                procedure  at the root.  You are now  asked if you  want to find
  1358.                another root. Answer yes and give -1 as first approximation.
  1359.  
  1360.  
  1361. {Solve_}
  1362.                                      solve_
  1363.                                      ------
  1364.  
  1365. The solve_ command works exactly like the solve command. But instead of looking
  1366. for a root  of the evaluation procedure, solve_ looks at  the root of the first
  1367. derivative of  the procedure. The solve_  function returns the  extremum of the
  1368. given procedure.
  1369.  
  1370. Please, refer to the {solve} topic for more details.
  1371.  
  1372.  
  1373. {Setup}
  1374.                                      setup
  1375.                                      -----
  1376.  
  1377. The 'setup' command enter a dialog where various customizing  parameters may be
  1378. modified. They are grouped in categories: General purposes, Plotter and Solver.
  1379. To modify only one categorie give the 'setup' command followed by g,p,s or m.
  1380.  
  1381. General purposes flags:
  1382.  
  1383. Trigonometric mode : (R)adian or (D)egree
  1384. Programmer binary output
  1385.      If set, all  answers in  evaluation mode are  systematically displayed  as
  1386.      binary, ascii, hexadecimal and octal as well as normal floating number.
  1387. Help automatically supplied:
  1388.      If set, the general help mode is entered after every error message.
  1389. Procedure break enabled
  1390.      If  set, a  procedure  will  be  aborted  if  any  keystroke  occurs  when
  1391.      unexpected.
  1392. Procedure trace mode enabled
  1393.      If set, the debug mode is active. The procedure is executed in single step
  1394.      mode and every modified variable is displayed.
  1395. Display status in prompt
  1396.      if set, the extended prompt is used instead of Mcalc.
  1397.                                                             Next_page: {setup1}
  1398.  
  1399.  
  1400. {setup1}
  1401. Display prompt in color
  1402.      If set, the Mcalc prompt,  the logo and the user entries are  displayed in
  1403.      color.
  1404. Max Nb of variable to allocate.
  1405. Max Nb of variable to list.
  1406.      This specifies the size of the indirect access variable table.
  1407.      The 2nd value specifies  the number of variables displayed with the 'List'
  1408.      command.
  1409.  
  1410. PLOT command flags: These are used by the 'Plot' command.
  1411.  
  1412. Screen mode
  1413.      Specify the screen mode in graphical mode : use 6=CGA, 16=EGA, 18=VGA, and
  1414.      -3 = highest possible resolution.
  1415. Screen lines
  1416.      Nb of text lines in graphical mode : 25, 43, 50 , 60, or -1 = max
  1417. Use fonts if available ?
  1418.      Use a graphical font  is present and defined via 'fontdir' and 'fontface'.
  1419.      Please refer to the user manual for details.
  1420. Use mouse if available ?
  1421.      Use a mouse if any present and this flag set.
  1422. Graphical screen : Color , BW ?
  1423.      Define if graphics will be in Black and White or in colors.
  1424.                                     Next_page: {setup2}, Previous_page: {setup}
  1425.  
  1426.  
  1427. {setup2}
  1428. Edit color's palette ?
  1429.      If 'Y', the color palette may be customized. See {setup3} for details.
  1430. X(Y) Axis format.
  1431.      This descriptor  use the C ANSI  printf format syntax to  describe how the
  1432.      axis will be labeled. Please, refer to the user manual for details.
  1433. SOLVE command flags: These are used by the 'Solve' command.
  1434.  
  1435. Max iterations ?
  1436.      The  maximum number of iterations  performed before Solve  returns when it
  1437.      cannot find a root with the requested accuracy.
  1438. Solve tolerance.
  1439.      The accuraty on an obtained root.
  1440. Solve delta.
  1441.      The  relative   value  of  the  dependant  estimation   to  calculate  the
  1442.      derivative.
  1443. Solve abs minimum seed.
  1444.      The absolute  value of the minimum  seed to be used.  The solver algorithm
  1445.      does  not support  a null  value as  initial seed.  It this occurs,  it is
  1446.      replaced by this parameter.
  1447.  
  1448. Interpolation polynomial order.
  1449.      Order used for interpolation, using the 'interpol' command.
  1450.  
  1451.                                    Next_page: {setup3}, Previous_page: {setup1}
  1452.  
  1453.  
  1454. {setup3}
  1455. If  you have  selected 'Graphical  screen in  color' and 'Edit  color's palette
  1456. Yes', Mcalc  finishs the setup session  with a graphical screen  showing a sine
  1457. wave, a cosine  wave and a dumped  cosine wave. By selecting  option 'Ext', you
  1458. can modify the current color settings. You have to select first an index.
  1459. For each index, you  can adjust the amount  of intensities for the three  basic
  1460. colors Red, Blue and Green.  Then using + and  -, you respectively increase  or
  1461. decrease  the  color intensity.  The current  intensities  for all  three basic
  1462. colors is displayed as an hexadecimal number between 0 and 3f.
  1463.  
  1464. The following index match the following parts of the displayed graphic:
  1465.      0    background
  1466.      1    axis and legends
  1467.      2    sine wave
  1468.      3    cosine wave
  1469.      4    dumped cosine wave
  1470.  
  1471. The index 5 to 15 are not displayed, but may be customized too !!!
  1472.  
  1473.                                                         Previous_page: {setup2}
  1474.  
  1475.  
  1476. {Quit}
  1477.                                       quit
  1478.                                       ----
  1479.  
  1480. This command is used to quit Master Calculator.
  1481.  
  1482.  
  1483. {Write}
  1484.                                      write
  1485.                                      -----
  1486.  
  1487. This keyword is used in Procedure_Basic or as a  command to open a result login
  1488. file.  When such  a file  is opened, every  result in  evaluation mode  or as a
  1489. 'print' command is send also to that file. The file is opened in 'append' mode.
  1490. This means that it is never overwritten if already exist.
  1491.  
  1492.           Syntax :       write "filename.type"
  1493.                          write "prn"
  1494.  
  1495. If the 2nd syntaxe is used, the loggin report is redirected to the lineprinter.
  1496.  
  1497. The loggin mode is active as long as another 'write'  command is encountered or
  1498. the {close} command is given.
  1499.  
  1500.  
  1501. {cls}
  1502.                                       cls
  1503.                                       ---
  1504.  
  1505. This command is used to clear the current screen.  You can use it in evaluation
  1506. mode as in a running procedure.
  1507.  
  1508. Caution : 'cls' may not be  used in graphical mode. Uncontrolled  effects could
  1509.           happen.
  1510.  
  1511.  
  1512. {load}
  1513.                                       load
  1514.                                       ----
  1515.  
  1516. This command is used to  load a procedure in  the editor memory, ready for  use
  1517. with the plot and solve familly of commands, without using the edit interactive
  1518. menu.
  1519.  
  1520.           Syntax :       load "file_name"
  1521.  
  1522.           file_name      is the  name  of  the  procedure  to  load.  The  file
  1523.                          extension .mcp is automatically appended.
  1524.  
  1525.                                  Related topics: {Edit}, {Run}, {Plot}, {Solve}
  1526.  
  1527.  
  1528. {run}
  1529.                                       run
  1530.                                       ---
  1531.  
  1532. This command is used to  load a procedure in  the editor memory, and start  its
  1533. execution  directly (1st  syntax). It  can be  used in  a procedure  to overlay
  1534. another one. It  can also be used to start the execution of a procedure already
  1535. loaded via the load or the edit commands ( 2nd syntax).
  1536.  
  1537.           Syntax :       run "file_name"
  1538.                          run label
  1539.  
  1540.           file_name      is the name of the procedure to load and run. The file
  1541.                          extension .mcp is automatically appended.
  1542.  
  1543.           label          is  a numeric  line label  of the  entry point  in the
  1544.                          already loaded procedure to run. 
  1545.  
  1546.                                 Related topics: {Edit}, {Load}, {Plot}, {Solve}
  1547.  
  1548.  
  1549. {Area_pointer}
  1550.                                   Area Pointer
  1551.                                   ------------
  1552.  
  1553. For statistical functions and  regression analysis, it is necessary  to specify
  1554. the current adress of a table of numbers where the data points are stored. This
  1555. is done in Mcalc via the concept of 'Area Pointer'.
  1556.  
  1557. An  area pointer  is  a  block of  successive  contiguous  memories (direct  or
  1558. indirect  access) whose  contents  give the  adress  of other  indirect  access
  1559. memories. An area pointer is a succession of 5 values:
  1560.      Area_X    is the adress  of the first  memory where the  x series of  data
  1561.                points are stored.
  1562.      Area_Y    is  the adress of  the first memory  where the y  series of data
  1563.                points are stored.
  1564.      Area_Z    is  the   adress  of  the  first  memory  where  the  regression
  1565.                calculated y series  of data points are stored.  It is also used
  1566.                to define where the 'cor' command can store the resulting table.
  1567.      Area_R    is the adress of the first memory where the series of regression
  1568.                results (the coeficient table) of data points is stored.
  1569.      Area_Size is the size of Area_X, Area_Y and Area_Z. In other  words, it is
  1570.                the number of points included into the statistic series of data.
  1571.  
  1572.                                                           More: {Area_Pointer1}
  1573.  
  1574.  
  1575. {Area_pointer1}
  1576.  
  1577. An  area pointer is defined by  its adress. This is the  indirect adress of the
  1578. first memory. (In other words, the adress of the memory where Area_X pointer is
  1579. stored).
  1580.  
  1581. Example:  Suppose we want  to perform  a linear regression  analysis. The  five
  1582.           points  are couple  of  values (X1,Y1)  ,  (X2,Y2) ...  (X5,Y5).  Let
  1583.           suppose the number have been entered into the memories:
  1584.           X1 to X5 in memories k,l,m,n,o
  1585.           Y1 to Y5 in memories p,q,r,s,t
  1586.           The calculated regression coef. in u and v.
  1587.           The calculated y values from memory w.
  1588.           Let store the pointers into memories b,c,d,e,f.
  1589.  
  1590.           b=adress of memory k = #ak-#aa
  1591.           c=adress of memory p = #ap-#aa
  1592.           d=adress of memory w = #aw-#aa
  1593.           e=adress of memory u = #au-#aa
  1594.           f=5  (There are 5 data points in each series).
  1595.  
  1596. The area pointer beginning at memory b has the adress of b or #ab-#aa.
  1597.  
  1598. As you can see, using  up to 8000 indirect variables, you are  not limited into
  1599. your regression series sizes!
  1600.  
  1601.  
  1602. {reg}
  1603.                                       reg
  1604.                                       ---
  1605.  
  1606. This command  is used  to perform a  regression analysis  on a  series of  data
  1607. points previously stored in memory. You can use this command  in evaluation and
  1608. in  program mode,  as long  as you don't  use model  4. You  can only  use this
  1609. command in evaluation mode if you select model 4.
  1610.  
  1611.           Syntax :       reg Area_Pointer,0,Degre
  1612.                          reg Area_pointer,Model
  1613.                          reg Area_pointer,4,Nb_of_terms,Variable
  1614.  
  1615. The  first syntax is used  for a linear or  polynomial regression. In this case
  1616. 'Degre' is  the order of  the polynome.  Specifying order as  1 means a  linear
  1617. regression. In this case, the displayed and returned coeficients are a table of
  1618. values  of  the polynome  starting  with  the  constant term  and  followed  by
  1619. increasing power of the independant variables.
  1620.  
  1621. The second syntax is used for non linear regression models:
  1622.           Model 1             y = a + b * ln(x)
  1623.           Model 2             y = a * exp(b * x)
  1624.           Model 3             y = a * x ^ b
  1625. The displayed and returned coeficients are a and b.
  1626.             Next_page: {reg1}, Related_topics: {Area_Pointer}, {Plotr}, {Listr}
  1627.  
  1628.  
  1629. {reg1}
  1630.  
  1631. The third syntax is  used for the  customized user defined  model. This is  the
  1632. most general  least square  regression model,  as you define  it yourself  as a
  1633. procedure. It is also the slowest model. This least  square method approximates
  1634. over the entire data interval with an expression of the form:
  1635.  
  1636.                   f(x) = c0*f0(x) + c1*f1(x) + .... + ck*fk(x)
  1637.  
  1638. In such  model, there are k+1 terms.  The functions f0(x), f1(x)  ... fk(x) are
  1639. defined by the user as  a procedure. The 'reg' command returns a table with the
  1640. coeficients c0, c1, ..., ck.
  1641.  
  1642. Using model  4, you have  to load a  function procedure  basic and specify  the
  1643. number of terms and the independant variable. When the procedure is called, the
  1644. variable that you specify contains the  'x' value of the above expression. Your
  1645. procedure must  write the successive values f0(x), f1(x) ... fk(x) into a block
  1646. of  indirect access variable. The variable 'i'  points to the beginning of this
  1647. block.
  1648.                                         Previous_page: {reg}, Next_page: {reg2}
  1649.  
  1650.  
  1651. {reg2}
  1652.  
  1653. Example:  To write your self a customized  regression for a parabole fitting of
  1654. the form:
  1655.  
  1656.                               f(x) = a + bx + cx^2
  1657.  
  1658. your procedure must compute and returns the three functions:
  1659.                                    f0(x) = 1
  1660.                                    f1(x) = x
  1661.                                   f2(x) = x^2
  1662.  
  1663. Assuming the independant variable is 'x', write the following procedure:
  1664.  
  1665.      sto(1,i)
  1666.      sto(x,i+1)
  1667.      sto(x*x,i+2)
  1668.  
  1669. The  contents of the variable 'i' and  eventually the indepentant variable, may
  1670. be modified  by your procedure.  Assuming that  an area pointer  is defined  at
  1671. adress 2, the regression could be started with the following command:
  1672.                                   reg 2,4,3,x
  1673. For such example, you could obtain a similar result with 'reg 2,0,2'.
  1674.  
  1675.                                                           Previous_page: {reg1}
  1676.  
  1677.  
  1678. {plotr}
  1679.                                      plotr
  1680.                                      -----
  1681.  
  1682. This  command is used  to plot  a serie  of data points  identified by  an area
  1683. pointer. It is also  used to plot the  data points and the regression  function
  1684. obtained by the last 'reg' command.
  1685.  
  1686.           Syntax :       plotr area_pointer
  1687.  
  1688.           area_pointer   the  same area pointer as used with the last 'reg', or
  1689.                          an area pointer to  the x,y data points. In  this last
  1690.                          case, Area_Z must be null.
  1691.  
  1692.                                  Related_topics: {Area_Pointer}, {reg}, {listr}
  1693.  
  1694.  
  1695. {listr}
  1696.                                      listr
  1697.                                      -----
  1698.  
  1699. This command  is used to display  the data points measured  and calculated from
  1700. the last regression analysis.
  1701.  
  1702.           Syntax :       listr area_pointer
  1703.  
  1704.           area_pointer   the same  area  pointer  as  used in  the  last  'reg'
  1705.                          command.
  1706.  
  1707.                                  Related_topics: {Area_Pointer}, {reg}, {plotr}
  1708.  
  1709.  
  1710. {savevar}
  1711.                                     savevar
  1712.                                     -------
  1713.  
  1714. This command is used to  save the current variables  contents to a file. In  no
  1715. extension is specified, the file extension '.mem' is used.
  1716.  
  1717.           Syntax :       savevar "filename"
  1718.  
  1719.                                                       Related_topics: {loadvar}
  1720.  
  1721.  
  1722. {loadvar}
  1723.                                     loadvar
  1724.                                     -------
  1725.  
  1726. This command  is  used to  load  the variables  contents  from a  file.  If  no
  1727. extension is specified, the  file extension '.mem' is used. If the file size is
  1728. less that the current variables table  size, the table size is reduced.  If the
  1729. file size is greater than the current variables table size, the file loading is
  1730. aborted when the table is full. A warning message is displayed in both case.
  1731.  
  1732.           Syntax :       savevar "filename"
  1733.  
  1734.                                                       Related_topics: {savevar}
  1735.  
  1736.  
  1737. {mean}
  1738.                                       mean
  1739.                                       ----
  1740.  
  1741. This function  returns the  mean value of  a serie  of numbers stored  into the
  1742. variables table.
  1743.  
  1744.           Syntax :       mean(adress,size)
  1745.  
  1746.           adress         is the indirect memory adress of the first  data point
  1747.                          of the serie.
  1748.  
  1749.           size           is the number of data points in the serie.
  1750.  
  1751.                                              Related_topic: {sigma} {min} {max}
  1752.  
  1753.  
  1754. {min}
  1755.                                       min
  1756.                                       ---
  1757.  
  1758. This function  returns the minimum value of a serie  of numbers stored into the
  1759. variables table.
  1760.  
  1761.           Syntax :       min(adress,size)
  1762.  
  1763.           adress         is the indirect memory adress of the first  data point
  1764.                          of the serie.
  1765.  
  1766.           size           is the number of data points in the serie.
  1767.  
  1768.                                             Related_topic: {sigma} {mean} {max}
  1769.  
  1770.  
  1771. {max}
  1772.                                       max
  1773.                                       ---
  1774.  
  1775. This function  returns the maximum value of a serie  of numbers stored into the
  1776. variables table.
  1777.  
  1778.           Syntax :       max(adress,size)
  1779.  
  1780.           adress         is the indirect memory adress of the first  data point
  1781.                          of the serie.
  1782.  
  1783.           size           is the number of data points in the serie.
  1784.  
  1785.                                             Related_topic: {sigma} {min} {mean}
  1786.  
  1787.  
  1788. {sigma}
  1789.                                      sigma
  1790.                                      -----
  1791.  
  1792. This  function returns the  standard deviation value  (or sigma) of  a serie of
  1793. numbers stored into the variables table.
  1794.  
  1795.           Syntax :       sigma(adress,size)
  1796.  
  1797.           adress         is the indirect memory adress of the first  data point
  1798.                          of the serie.
  1799.  
  1800.           size           is the number of data points in the serie.
  1801.  
  1802.                                               Related_topic: {mean} {min} {max}
  1803.  
  1804.  
  1805. {cor}
  1806.                                       cor
  1807.                                       ---
  1808.  
  1809. This  command computes  the  correlation function  of a  serie of  numbers. The
  1810. correlation function of two series x(i) and y(i), both having n data points, is
  1811. defined as:
  1812.  
  1813.                   cor(j) = Sum [ x(i) * y((i + j) modulo n) ]
  1814.  
  1815.  
  1816.           Syntax :       cor area_pointer
  1817.  
  1818.           area_pointer   a pointer to a structure of kind {Area_Pointer}.
  1819.  
  1820.           Area_X,  AreaY define  where the  two series  of numbers  are stored.
  1821.           Area_Z  defines  where  'cor'   may  store  the  resulting  function.
  1822.           Area_Size is the number of points in the X and Y series.
  1823.           Area_R is not used here.
  1824.  
  1825.  
  1826. {normal}
  1827.                                      normal
  1828.                                      ------
  1829.  
  1830. The standard normal  distribution (or  gaussian, or 'bell-curve')  is the  most
  1831. frequently used statistic in applied probability.
  1832.  
  1833.           Syntax :       normal(value,mean,sigma)
  1834.  
  1835.           Given a normal distribution having 'mean' and 'sigma'  as statistical
  1836.           parameters,  the 'normal'  function  returns the  probability that  a
  1837.           random variable is less or equal to 'value'.
  1838.  
  1839.           Caution :      the accuracy of this function is around 7.5e-8.
  1840.  
  1841.                                                        Related_topic: {inormal}
  1842.  
  1843.  
  1844. {inormal}
  1845.                                     inormal
  1846.                                     -------
  1847.  
  1848. The standard normal  distribution (or  gaussian, or 'bell-curve')  is the  most
  1849. frequently used statistic in applied probability.
  1850.  
  1851.           Syntax :       inormal(probability,mean,sigma)
  1852.  
  1853.  
  1854.           'inormal' is the inverse of the 'normal' function.
  1855.  
  1856.           Given a normal distribution having  'mean' and 'sigma' as statistical
  1857.           parameters, the 'inormal' function returns  the maximum value that  a
  1858.           random variable can reach with for a given 'probability'.
  1859.  
  1860.           Caution :      the accuracy of this function is around 4.5e-4.
  1861.                          In order  to obtain  a better accuracy,  combining the
  1862.                          'normal' function with the 'solve' algorithm should be
  1863.                          prefered. The blackdraw is a longer computing time.
  1864.  
  1865.                                                         Related_topic: {normal}
  1866.  
  1867.  
  1868. {listk}
  1869.                                      listk
  1870.                                      -----
  1871.  
  1872. It is  possible to define customazed functions keys F1  to F10 and their Shift,
  1873. Control and Alternate versions. This gives you up to 40 user defined keys.
  1874.  
  1875. The 'listk' command displays all assigned functions keys.
  1876. To modify the assignment, use the {MCKEY} utility. Please, refer  to this topic
  1877. for more details.
  1878.  
  1879.  
  1880. {mckey}
  1881.                                    MCKEY.EXE
  1882.                                    ---------
  1883.  
  1884. This utility can be used  to create a user  keys definition file from an  ASCII
  1885. text file that contains the key strings to assignate.
  1886.  
  1887. To create  your own  user keys  definition file, write  a text  file using  any
  1888. editor where you enter each key definition using the following syntax:
  1889.  
  1890.      Key_code,"string to assign",value
  1891.  
  1892. Each key you want to assign must be at the beginning of a new line.
  1893. Key code is a number 01, 02, 03, ... , 10 preceded by a prefix: F,S,C,A.
  1894. The prefix means: F=normal, S=shift, C=Ctrl, A=Alt.
  1895. String to assign is the text of the string to assign to the key Key_code.
  1896. Value, if not zero, means that a 'Return' is added to the string.
  1897.  
  1898. Example:  To  assign  the  function 'help'  to  the  key  'F1', with  immediate
  1899.           execution, give the following line:
  1900.                                   F01,"help",1
  1901.           To assign the command quit to Alt-F10,  but the user as to strike the
  1902.           return him self, add the following line to the file:
  1903.                                   A10,"quit",0
  1904.                                                                  More: {MCKEY1}
  1905.  
  1906.  
  1907. {MCKEY1}
  1908.  
  1909. When  the file is  filled as you  want, run the  MCKEY utility. On  the command
  1910. line, give the name of your Source File.
  1911.  
  1912. Example:  Let suppose your description file is "mykey.txt", give the  following
  1913.           dos command:
  1914.  
  1915.                                 mckey mykey.txt
  1916.  
  1917. Caution:  1)   mckey  creates  allways  a  definition  file  'mcalc.key'.  Your
  1918.                original mcalc.key file will be overwritten. Keep allways a copy
  1919.                in a safety place before running mckey.
  1920.           2)   Mcalc only  load the new definition  file when you start  it. If
  1921.                you modify it  from a  mcalc shell session,  the new  definition
  1922.                file will not be used. Quit Mcalc and restart it.
  1923.           3)   If later, you want  to modify your definition, just  modify your
  1924.                source file and recompile it with mckey.
  1925.  
  1926. Warning:  The   'mckey.exe'  utility  and  the  source  of  the  original  keys
  1927.           definition  file 'mckey.def'  are only  supplied with  the registered
  1928.           version of Mcalc.
  1929.  
  1930.  
  1931. {read_}
  1932.                                      read_
  1933.                                      -----
  1934.  
  1935.  
  1936. This command is used  to read a text  structured file that contains columns  of
  1937. numbers. The data are stored into memory and an area_pointer is initialized and
  1938. returned. When  the data are  in memory,  they are ready  to perform  numerical
  1939. analysis via the interpol or reg commands.
  1940.  
  1941.      Syntax:   read_ "filename[.ext]",first_lin,nb_lin,x_col,y_col[options]
  1942.  
  1943.      filename       the name  of the  text file  to read  (if  no extension  is
  1944.                     supplied, Mcalc append the '.txt' extension.
  1945.      first_lin      the first line you want to read. 
  1946.      nb_lin         the number  of lines to  read (=  the number  of points  to
  1947.                     store in memory)
  1948.      x_col          the number of the data column for x values.
  1949.      y_col          the number of the data column for y values.
  1950.  
  1951.      [options]      ,basis,area_pointer
  1952.      basis          the starting memory adress where the data will be stored.
  1953.      area_pointer   the starting adress where the area pointer will be created.
  1954.  
  1955.                      Related_topics: {reg}, {interpol}, {plotr}, {area_pointer}
  1956.  
  1957.  
  1958. {interpol}
  1959.                               interpol & interpol_
  1960.                               --------------------
  1961.  
  1962. The 'interpol'  command works on a serie of data  points table located using an
  1963. area_pointer. It returns an interpolated value of y, for a given value of x.
  1964.  
  1965.           Syntax :       interpol area_pointer,x
  1966.  
  1967.           area_pointer   is the adress of a structure of type {area_pointer}
  1968.                          Area_X    the adress of the x values table
  1969.                          Area_Y    the adress of the y values table
  1970.                          Area_Size the number of points in the x,y tables
  1971.                          Area_Z & Area_R are not used and ignored.
  1972.  
  1973.           x              the x  value you want the  coresponding interpolated y
  1974.                          value.
  1975.  
  1976.           Remarks:  1)   'interpol' use a lagrange  polynome. The order (in the
  1977.                          range 1-9) is defined via the 'setup' command.
  1978.                     2)   'interpol_' works like 'interpol' but performs a third
  1979.                          order spline interpolation.
  1980.                     3)   the (x,y) points don't need to be  equally spaced, but
  1981.                          the x values must be sorted in increasing values.
  1982.  
  1983.  
  1984. {interpol_}
  1985.                                    interpol_
  1986.                                    ---------
  1987.  
  1988. Please, refer at {interpol} topic.
  1989.  
  1990.  
  1991. {integral}
  1992.                                     integral
  1993.                                     --------
  1994.  
  1995. This command is used to compute the definite integral of a function or equation
  1996. described as  a procedure. The procedure  must first be loaded  into the editor
  1997. memory. It must take one value from a given independant variable, and returns a
  1998. value into another dependant variable.
  1999.  
  2000.           Syntax :       integral input_var, output_var, from, to, accuracy
  2001.  
  2002.           input_var      the procedure input variable name
  2003.           output_var     the procedure output variable name
  2004.           from           the first limit of integration
  2005.           to             the second limit of integration
  2006.           accuracy       the   absolute  error   allowed  when   computing  the
  2007.                          integral.
  2008.  
  2009. The  'integral' command uses the Romberg  integration principle. the 'accuracy'
  2010. parameter must be small in respect  to the expected answer, but not  too small.
  2011. Practically, accuracy could not be smaller that the  expected answer divided by
  2012. a factor 1e12.
  2013.  
  2014.  
  2015. {last}
  2016.                                       last
  2017.                                       ----
  2018.  
  2019.  
  2020. This  function does not take any argument,  and returns the value of the latest
  2021. computed answer  in evaluation mode.  It also returns  the value of  the latest
  2022. results for some commands in procedure mode.
  2023.  
  2024. After a {clear} command, it returns the highest possible indirect index value.
  2025.  
  2026.  
  2027. {Utilities}
  2028.                                    Utilities.
  2029.                                    ----------
  2030.  
  2031. The registered version of Mcalc is supplied with the following utilies:
  2032.  
  2033.  {MAC}              The macro editor/compiler driver.
  2034.  
  2035.  {MCMAC}            The macro compiler.
  2036.  
  2037.  {MCKEY}            The user keys definition compiler.
  2038.  
  2039.  {MAKEUNIT}         Utility to modify the original physical units database.
  2040.  
  2041.  {NOTEPAD}          A small windowing editor to write procedure and macro.
  2042.  
  2043.  {ASSISTANT}             A  window  and menu  interfaced assistant  add-in that
  2044.                          gives you most Mcalc features at the fingers.
  2045.  
  2046.  
  2047. {Macro}
  2048.                                      Macro.
  2049.                                      ------
  2050.  
  2051. The 'macro'  command starts the  execution of a keyboard  automated macro file.
  2052. The file extension '.mac' is automatically supplied. 
  2053.  
  2054.           Syntax :       macro "filename"
  2055.                          macro
  2056.  
  2057. To start a macro execution,  use the first syntaxe. "filename" is the name of a
  2058. ".mac" file, already compiled using MCMAC or MAC utilities.
  2059.  
  2060. The second syntax may be used when a macro is running to abort itself.
  2061.  
  2062. To abort a running macro from the keyboard, strike the Ctrl_End key.
  2063.  
  2064.                                                                  More: {Macro1}
  2065.                                                  Related_topics: {MCMAC}, {MAC}
  2066.  
  2067.  
  2068. {Macro1}
  2069.                               The macro language.
  2070.                               -------------------
  2071.  
  2072.  
  2073. A  macro  is a  sequence  of keystrokes,  stored  previously into  a  file, and
  2074. executed automatically  by Mcalc. Before using  a macro, you  must performs the
  2075. following steps:
  2076.  
  2077. 1)   Write a macro source file.
  2078. 2)   Compile the macro into an executable file.
  2079. 3)   Run the macro using the 'macro' command.
  2080.  
  2081. A macro source file is any ascii text file having the extension '.mcs'.
  2082. A macro source file follows the following syntax rules:
  2083.  
  2084. -    a line beginning with ';' is skipped. It is a comment.
  2085. -    a line beginning with '#' is a command line interpreted by the compiler.
  2086. -    the following characters are ignored: TAB, CARRIAGE RETURN, LINE FEED
  2087. -    the character '~' is interpreted as the ENTER or RETURN key.
  2088. -    anything after  '<'  is considered  as an  escape sequence  to describe  a
  2089.      particular key.
  2090.  
  2091.                                                                  More: {Macro2}
  2092.  
  2093.  
  2094. {Macro2}
  2095.                           The macro escape sequences.
  2096.                           ---------------------------
  2097.  
  2098. The  following  strings  are  recognized  as  'escape  sequences'.  Instead  of
  2099. submitting all characters as keystrokes, the sequence is replaced by one unique
  2100. equivalent key:
  2101.  
  2102.      <up>  <down>  <lft>  <rgt>  <home>  <end>  <pgup>  <pgdn>  <enter>
  2103.      <ctrlhome>  <ctrlend>  <ctrlpgup>  <ctrlpgdn>  <ctrllft>  <ctrlrgt>
  2104.      <bks> <del>  <ins>  <tab>  <shifttab>  <esc>
  2105.  
  2106.      <f1> .... <f10>
  2107.      <shiftf1> ... <shiftf10>
  2108.      <ctrlf1> ... <ctrlf10>
  2109.      <altf1> ... <altf10>
  2110.  
  2111.      To send a '<' character, use the <<> escape sequence.
  2112.  
  2113.                                                                  More: {Macro3}
  2114.  
  2115.  
  2116. {Macro3}
  2117.                           The macro compiler commands.
  2118.                           ----------------------------
  2119.  
  2120. Any  line beginning with  '#' is a command  that has a  special meaning for the
  2121. compiler. The following commands are available:
  2122.  
  2123.      #Wvalue        Wait  'value'   secondes   before  continuing   the   macro
  2124.                     execution.
  2125.      #K             Wait  until a key is  pressed on the  keyboard. The striked
  2126.                     key is not passed to Mcalc.
  2127.      #Fa,b          Begin of a for-next loop.
  2128.                     Up to 10 loops may be imbricated. A loop is identified by a
  2129.                     digit a (in  the range 0 to 9). b is the number of loops to
  2130.                     run (in the range 1 to 32000).
  2131.      #Na            Next  instruction  to  finish  a  loop.  'a'  is  the  same
  2132.                     identifier and must match this the #Fa identifier.
  2133.      #S             Suspend the current macro until CTRL_PGDN is striked. Mcalc
  2134.                     may be normally used during the macro is suspended.
  2135.      #Tll,cc,String Write String on the screen at line ll, column cc. The upper
  2136.                     left  corner  is  at  coordinates  (1,1).  Any   underscore
  2137.                     character  is translated to a SPACE. If ll=-1 or cc=-1, the
  2138.                     text  is displayed  at the  next line,  same column  as the
  2139.                     previous #T command.
  2140.                                                                 More : {Macro4}
  2141.  
  2142.  
  2143. {Macro4}
  2144.  
  2145.      Example of two imbricated loops:
  2146.      #F0,10
  2147.      code...
  2148.      #F1,5
  2149.      code...
  2150.      #N1
  2151.      #N0
  2152.  
  2153.  
  2154. {MAC}
  2155.                                       MAC
  2156.                                       ---
  2157.  
  2158. 'MAC' is  the macro editor/compiler  driver. You  can execute it  from the  dos
  2159. prompt, or from Mcalc using the 'editm' command.
  2160.  
  2161. This utility  is usefull to call  the editor you want  to use to  write a macro
  2162. source  file, to  call the MCMAC  macro compiler,  or to  force recompiling all
  2163. modified macros since the last compilation.
  2164.  
  2165.  
  2166. {MCMAC}
  2167.                                      MCMAC
  2168.                                      -----
  2169.  
  2170. 'MCMAC' is the macro compiler. You can use it  directly from the Dos prompt, or
  2171. from the 'MAC' driver.
  2172.  
  2173.      Standalone syntax :      MCMAC filename
  2174.  
  2175. A source file with extension '.mcs' is searched for. If correct, it is compiled
  2176. and a run macro file is created having extension '.mac'.
  2177.  
  2178.  
  2179. {NOTEPAD}
  2180.                                     NOTEPAD
  2181.                                     -------
  2182.  
  2183. 'NOTEPAD'  is a small  multiple windows editor  that you can  use to write your
  2184. procedures and macros.
  2185.  
  2186. Using  the Alt_M  toggle key,  you can  edit as  with a  normal editor,  or use
  2187. Notepad to write directly macro escape sequences.
  2188.  
  2189.  
  2190. {ASSISTANT}
  2191.                                    ASSISTANT
  2192.                                    ---------
  2193.  
  2194. 'ASSISTANT' is a Mcalc add-in. This utility combines procedure and macro powers
  2195. to integrate a windowed  and menu interface  with Mcalc calculation power.  The
  2196. result is Mcalc possibilities, driven by a menuing system.
  2197.  
  2198. To invoke ASSISTANT, begin a new command line by any of the following keys:
  2199.  
  2200.      /    *    or   <
  2201.  
  2202.  
  2203. Remark:   ASSISTANT is only supplied with the registered version of Mcalc.
  2204.  
  2205.  
  2206. {editm}
  2207.                                      editm
  2208.                                      -----
  2209.  
  2210. This command is used to invoke the {MAC} utility.
  2211.  
  2212.           Syntax :       editm
  2213.  
  2214.  
  2215. {task}
  2216.                                       task
  2217.                                       ----
  2218.  
  2219.  
  2220. This command is used to invoke a user written task or process. Before  the task
  2221. is  invoked, the  variables are  saved under  the  file 'mcalc.mem'.  After the
  2222. process, the variables are restored from the same file.
  2223.  
  2224.           Syntax :       task "taskfile"
  2225.  
  2226.           taskfile       is the name of  the task to run. It  will be truncated
  2227.                          to 12  characters. If no file  extension is specified,
  2228.                          Mcalc will try 'com', 'exe' and finally 'bat' files.
  2229.                          The task file can  be written in any langage  and must
  2230.                          be in the current directory or in the current path.
  2231.  
  2232.  
  2233. {scale}
  2234.                                      scale
  2235.                                      -----
  2236.  
  2237. This command can be used  in conjonction with the {plot} and  {graph} commands.
  2238. In both  case, it  defines the  scale types  that will  be  used in  subsequent
  2239. graphical screens.
  2240.  
  2241.  
  2242.           Syntax :       scale axis_x , axis_y , remapflag
  2243.  
  2244.           axis_x,axis_y  this  defines  the  scale  function  applied   to  the
  2245.                          corresponding axis. Possible  arguments are: N (normal
  2246.                          linear scale),  R (square root),L  (logarithmic) or  G
  2247.                          (gaussian curve : normal(x,0,1)
  2248.           remapflag      this flag  defines if the axis graduations are done by
  2249.                          dividing the range into 5  logical parts (N = normal),
  2250.                          or by dividing the range into 5 physically equal parts
  2251.                          (R = remap).
  2252.  
  2253.           Caution :      The R  axis needs  positive values,  while the L  axis
  2254.                          needs strictly positive values. 
  2255.                          G axis disables the Remap flag.
  2256.  
  2257. When Mcalc is started, the 'scale n,n,n' options are always used by default.
  2258.  
  2259.  
  2260. {remote}
  2261.                                      remote
  2262.                                      ------
  2263.  
  2264. The 'remote'  command is used in the extended slave  processor mode of Mcalc to
  2265. get the  status of the remote  communication status word. It  current status is
  2266. returned into the 'last' register. Possible returned values are:
  2267.  
  2268.      -3        The remote  communication file 'mcalcrem.sys' was  not found, or
  2269.                did not exist.
  2270.      -2        The remote  communication file  is locked. A  master process  is
  2271.                currently writting to it.
  2272.      >=0       The command or status word to use.
  2273.  
  2274.  
  2275. This command only works correctly if the following conditions are satisfied:
  2276.  
  2277.      1.        MSDOS version 3.0 or higher is used.
  2278.      2.        The 'share.exe' dos extension is loaded.
  2279.      3.        Mcalc is executed in a MSDOS session under Windows 3.1 or higher
  2280.                running in 386 enhanced mode.
  2281.  
  2282.                                                         Related command: {lock}
  2283.  
  2284.  
  2285. {lock}
  2286.                                       lock
  2287.                                       ----
  2288.  
  2289. The 'lock' command  is used in the extended  master processor mode of  Mcalc to
  2290. send the remote communication command word to another session of Mcalc  running
  2291. in slave mode.
  2292.  
  2293.      Syntax:        lock expression
  2294.  
  2295.      expression     is an integer value that have the following meaning:
  2296.  
  2297.      -1 = lock the  communication file. (Prevent  any slave process  of reading
  2298.           the file, during any file modification.)
  2299.      -2 = unlock the communication file.
  2300.      a value in the range 0 - 32000 stored to the communication file.
  2301.  
  2302. This command only works correctly if the following conditions are satisfied:
  2303.  
  2304.      1.   MSDOS version 3.0 or higher is used.
  2305.      2.   The 'share.exe' dos extension is loaded.
  2306.      3.   Mcalc  is executed  in a MSDOS  session under  Windows 3.1  or higher
  2307.           running in 386 enhanced mode.
  2308.  
  2309.                                                         Related command: {lock}
  2310.  
  2311.  
  2312. {float}
  2313.                      The floating point exception handler.
  2314.                      -------------------------------------
  2315.  
  2316. The floating  point exception handler  is a  special task,  within Mcalc,  that
  2317. handles and controls how the floating point math package will  react in special
  2318. situations. Mcalc performs all  computations using a double precision  floating
  2319. point system. If a  mathematical coprocessor (8087, 80287, 80387 or 80486DX) is
  2320. found, Mcalc  will use  it. Else,  it will  emulate the  processor via  its own
  2321. software. In both case, the floating  point package will be loaded with default
  2322. parameters. These parameters are called the floating-point control word.
  2323.  
  2324. The  'float'  function gets  and sets  the  floating-point control  word, which
  2325. allows the program to change the precision, rounding, and infinity modes in the
  2326. floating-point math  package. You can mask or  unmask floating-point exceptions
  2327. by using the 'float' function.
  2328.  
  2329.           Syntax :       float 0
  2330.                          float mask,control_set
  2331.  
  2332.           mask           defines which control set must be changed.
  2333.           control_set    defines the new control set to be used.
  2334.  
  2335.                                                                  More: {float1}
  2336.  
  2337.  
  2338. {float1}
  2339. If the first syntax is used, Mcalc just displays the current control word. This
  2340. word is the ored combination of all control_sets selected. The  control word is
  2341. displayed in hexadecimal notation.
  2342.  
  2343. If the second syntax is used, you can modify one of the following kind of sets:
  2344. floating exceptions, infinity mode, precision and rounding. The (default) means
  2345. that this parameter is set when you start Mcalc.
  2346.  
  2347.      mask      control_set         or
  2348.  
  2349.      Enable floating point exception for ....
  2350.      1                   1         #h0001    Invalid operation       (default) 
  2351.                          2         #h0002    Denormal number
  2352.                          4         #h0004    Divide by zero          (default) 
  2353.                          8         #h0008    Overflow                (default) 
  2354.                         16         #h0010    Underflow
  2355.                         32         #h0020    Inexact (precision)
  2356.  
  2357.      Behave infinity mode as ....
  2358.      2                4096         #h1000    Affine (+inf != -inf)   (default) 
  2359.                          0         #h0000    Projective (+inf = -inf)
  2360.  
  2361.  
  2362.                                               Next: {float2}, Previous: {float}
  2363.  
  2364.  
  2365. {float2}
  2366.      Select rounding method as ....
  2367.      3                   0         #h0000    Near                    (default) 
  2368.                       1024         #h0400    Down
  2369.                       2048         #h0800    Up
  2370.                       3072         #h0c00    Chop
  2371.  
  2372.      Computation precision ....
  2373.      4                   0         #h0000    24 bits
  2374.                        512         #h0200    53 bits
  2375.                        768         #h0300    64 bits                  (default)
  2376.  
  2377.      Enable floating points exceptions but trap them (don't cancel evaluation) 
  2378.      5              Same as for mask=1 but invalid,divide by 0 and overflow
  2379.                     are always enabled.
  2380.  
  2381.      Reset to default settings:
  2382.      6                   0         #h0000    Exceptions:    invalid operation
  2383.                                                             divide by 0
  2384.                                                             overflow
  2385.                                              Infinity  :    affine
  2386.                                              Rounding  :    near
  2387.                                              Precision :    64 bits
  2388.  
  2389.                                              Next: {float3}, Previous: {float1}
  2390.  
  2391.  
  2392. {float3}
  2393.      Enabling exceptions  means  that if  a  specific exception  occurs,  Mcalc
  2394.      interrupts  the normal expression evaluation  and reset the floating point
  2395.      machine (coprocessor or emulator). 
  2396.  
  2397.      If  any mask  other than  5 have  been selected,  the parser  execution is
  2398.      cancelled  and a  floating point error  message is displayed.  This is the
  2399.      default behaviour of Mcalc.
  2400.  
  2401.      If  mask=5 have been  selected, Mcalc resumes  the execution  where it was
  2402.      interrupted. In this case, the exception has been trapped and  the current
  2403.      procedure or macro  continues. The  advantage is that  some procedure  can
  2404.      continue (for example plotting a function  curve), self if one data  point
  2405.      could  not  be  correctly  evaluated.  The  inconvenience  is  that  Mcalc
  2406.      evaluation can lead to incorrect computation, WITHOUT ANY ERROR MESSAGE.
  2407.      In this mode, when you quit  Mcalc, the total number of trapped exceptions
  2408.      (errors that have not been displayed) is indicated as a warning.
  2409.  
  2410.                                              Next: {float4}, Previous: {float2}
  2411.  
  2412.  
  2413. {float4}
  2414. The following exceptions can be detected:
  2415.  
  2416.      invalid operation
  2417.           An  invalid operation occured.  This usually involves  operating on a
  2418.           NAN (Not A Number) or an infinity.
  2419.  
  2420.      denormal number
  2421.           A very small floating-point number was generated, which may no longer
  2422.           be  valid due  to  loss of  significance.  Denormals are  by  default
  2423.           trapped and operated on.
  2424.  
  2425.      division by zero
  2426.           An attempt was made to divide by zero.
  2427.  
  2428.      overflow
  2429.           An overflow occured in a floating-point operation.
  2430.  
  2431.      underflow
  2432.           An underflow occured in a floating-point operation. Underflows are by
  2433.           default trapped and the underflowing value replaced by 0.0.
  2434.  
  2435.                                              Next: {float5}, Previous: {float3}
  2436.  
  2437.  
  2438. {float5}
  2439.      inexact
  2440.           Loss of precision  occured in a floating-point operation. By default,
  2441.           it is  trapped, since almost  any floating-point operation  can cause
  2442.           loss of precision.
  2443.  
  2444.      unemulated
  2445.           An  attempt was  made to  execute an  8087/80287 instruction  that is
  2446.           invalid  or not supported by the emulator. This should normally never
  2447.           occurs and means a bug in the compiler.
  2448.  
  2449.      negative square root
  2450.           the  operand  in a  square root  operation  is negative.  This should
  2451.           normally never occurs and means a bug in the compiler.
  2452.  
  2453.      stack overflow, underflow
  2454.           a floating-point  expression caused  a coprocessor or  emulator stack
  2455.           overflow/underflow.
  2456.  
  2457.      explicit exception
  2458.           a  software floating  point exception  signal was  send.  This should
  2459.           normally never occurs and could be a Mcalc bug.
  2460.  
  2461.                                                              Previous: {float4}
  2462.  
  2463.  
  2464. {abs}
  2465.  
  2466.  
  2467. {acos}
  2468.  
  2469.  
  2470. {acosh}
  2471.  
  2472.  
  2473. {and}
  2474.  
  2475.  
  2476. {asin}
  2477.  
  2478.  
  2479. {asinh}
  2480.  
  2481.  
  2482. {atan}
  2483.  
  2484.  
  2485. {atanh}
  2486.  
  2487.  
  2488. {cos}
  2489.  
  2490.  
  2491. {cosh}
  2492.  
  2493.  
  2494. {exp}
  2495.  
  2496.  
  2497. {exp2}
  2498.  
  2499.  
  2500. {exp10}
  2501.  
  2502.  
  2503. {fact}
  2504.  
  2505.  
  2506. {finput_}
  2507.  
  2508.  
  2509. {frac}
  2510.  
  2511.  
  2512. {from}
  2513.  
  2514.  
  2515. {help}
  2516.  
  2517.  
  2518. {int}
  2519.  
  2520.  
  2521. {j0}
  2522.  
  2523.  
  2524. {j1}
  2525.  
  2526.  
  2527. {jn}
  2528.  
  2529.  
  2530. {y0}
  2531.  
  2532.  
  2533. {y1}
  2534.  
  2535.  
  2536. {yn}
  2537.  
  2538.  
  2539. {ln}
  2540.  
  2541.  
  2542. {log}
  2543.  
  2544.  
  2545. {log2}
  2546.  
  2547.  
  2548. {log10}
  2549.  
  2550.  
  2551. {next}
  2552.  
  2553.  
  2554. {not}
  2555.  
  2556.  
  2557. {or}
  2558.  
  2559.  
  2560. {pi}
  2561.  
  2562.  
  2563. {pwr}
  2564.  
  2565.  
  2566. {return}
  2567.  
  2568.  
  2569. {rnd}
  2570.  
  2571.  
  2572. {sin}
  2573.  
  2574.  
  2575. {sinc}
  2576.  
  2577.  
  2578. {sinh}
  2579.  
  2580.  
  2581. {sqr}
  2582.  
  2583.  
  2584. {sqrt}
  2585.  
  2586.  
  2587. {step}
  2588.  
  2589.  
  2590. {tan}
  2591.  
  2592.  
  2593. {tanh}
  2594.  
  2595.  
  2596. {then}
  2597.  
  2598.  
  2599. {to}
  2600.  
  2601.  
  2602. {twopi}
  2603.  
  2604.  
  2605. {xor}
  2606.  
  2607.  
  2608. {modulo}
  2609.